<template>
  <view class="container" style="max-width: 500px; overflow-y: auto">
    <view class="left-bottom-sign"></view>
    <view class="back-btn yticon icon-zuojiantou-up" @click="navBack"></view>
    <view class="right-top-sign"></view>
    <!-- 设置白色背景防止软键盘把下部绝对定位元素顶上来盖住输入框等 -->
    <view class="wrapper">
      <view class="left-top-sign">LOGIN</view>
      <view class="welcome"> 欢迎回来！ </view>
      <view class="input-content">
        <view class="input-item">
          <text class="tit">手机号码</text>
          <input
            type="number"
            :value="mobile"
            placeholder="请输入手机号码"
            maxlength="11"
            data-key="mobile"
            @input="inputChange"
          />
        </view>
        <view class="input-item">
          <text class="tit">密码</text>
          <input
            type="mobile"
            :value="password"
            placeholder="8-18位不含特殊字符的数字、字母组合"
            placeholder-class="input-empty"
            maxlength="20"
            password
            data-key="password"
            @input="inputChange"
            @confirm="toLogin"
          />
        </view>
      </view>
      <button class="confirm-btn" @click="toLogin" :disabled="logining">
        登录
      </button>
      <view style="display: flex; justify-content: center">
        <navigator
          url="/pages/index/index"
          open-type="switchTab"
          class="confirm-btn"
          style="text-align: center; margin-top: 10px; justify-content: center"
          >去首页</navigator
        >
      </view>
      <view style="display: flex; justify-content: center">
        <view class="forget-section"> 忘记密码? </view>
        <view class="forget-section"> 注册账号 </view>
      </view>
    </view>
    <!-- 其他方式登录 -->
    <view class="other-ways">
      <text>其他登录方式</text>
    </view>
    <!-- 登录方式 -->
    <view class="login-way">
      <view class="way">
        <image
          src="/static/wx_ico.png"
          style="width: 40px; height: 40px"
          mode=""
          @click="wxLogin"
        ></image>
      </view>
    </view>
  </view>
</template>

<script>
import { mapMutations } from "vuex";

export default {
  data() {
    return {
      mobile: "13711110002",
      password: "123456",
      logining: false,
    };
  },
  onLoad() {
    this.checkWeChatCode();
  },
  methods: {
    ...mapMutations(["login"]),
    inputChange(e) {
      const key = e.currentTarget.dataset.key;
      this[key] = e.detail.value;
    },
    isWechat() {
      return (
        String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) ===
        "micromessenger"
      );
    },
    getQueryVariable(variable) {
      var arr = location.href.split("?");
      if (arr.length <= 1) {
        return false;
      }
      var query = location.href.split("?")[1];
      var vars = query.split("&");
      for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");

        if (pair[0] == variable) {
          return pair[1];
        }
      }
      return false;
    },
    checkWeChatCode() {
      let code = this.getQueryVariable("code");
      if (code) {
        this.loginByCode(code);
      }
    },
    navBack() {
      uni.navigateBack();
      console.log(`navigateBack`, getCurrentPages());
    },
    wxLogin() {
      if (!this.isWechat()) {
        this.$utils.msg("当前不在微信环境内");
        return;
      }
      // url 是当前链接 encodeURIComponent字符串作为 URI 组件进行编码 来做可识别的回调链接
      let uri = encodeURIComponent(window.location.href);
      let appid = "wx652437da594714c0";
      window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;
    },
    async loginByCode(code) {
      this.logining = true;
      const result = await this.$http.login.loginByCode({
        code,
      });
      this.login(result.data);
      uni.navigateTo({
        url: "/pages/index/index",
      });
    },
    toRegist() {
      this.$api.msg("去注册");
    },
    async toLogin() {
      this.logining = true;
      const { mobile, password } = this;
      const result = await this.$http.login.loginByAccount({
        username: mobile,
        password,
      });
      this.login(result.data);
      uni.navigateBack();
    },
    toIndex() {
      this.$api.msg("去首页");
      uni.navigateTo({
        url: "/pages/index/index",
      });
    },
  },
};
</script>

<style lang="scss">
page {
  background: #fff;
}

.container {
  padding-top: 115px;
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #fff;
}

.wrapper {
  position: relative;
  z-index: 90;
  background: #fff;
  padding-bottom: 40upx;
}

.back-btn {
  position: absolute;
  left: 40upx;
  z-index: 9999;
  padding-top: var(--status-bar-height);
  top: 40upx;
  font-size: 40upx;
  color: $font-color-dark;
}

.left-top-sign {
  font-size: 120upx;
  color: $page-color-base;
  position: relative;
  left: -16upx;
}

.right-top-sign {
  position: absolute;
  top: 80upx;
  right: -30upx;
  z-index: 95;

  &:before,
  &:after {
    display: block;
    content: "";
    width: 400upx;
    height: 80upx;
    background: #b4f3e2;
  }

  &:before {
    transform: rotate(50deg);
    border-radius: 0 50px 0 0;
  }

  &:after {
    position: absolute;
    right: -198upx;
    top: 0;
    transform: rotate(-50deg);
    border-radius: 50px 0 0 0;
    /* background: pink; */
  }
}

.left-bottom-sign {
  position: absolute;
  left: -270upx;
  bottom: -320upx;
  border: 100upx solid #d0d1fd;
  border-radius: 50%;
  padding: 180upx;
}

.welcome {
  position: relative;
  left: 50upx;
  top: -90upx;
  font-size: 46upx;
  color: #555;
  text-shadow: 1px 0px 1px rgba(0, 0, 0, 0.3);
}

.input-content {
  padding: 0 60upx;
}

.input-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding: 0 30upx;
  background: $page-color-light;
  height: 120upx;
  border-radius: 4px;
  margin-bottom: 50upx;

  &:last-child {
    margin-bottom: 0;
  }

  .tit {
    height: 50upx;
    line-height: 56upx;
    font-size: $font-sm + 2upx;
    color: $font-color-base;
  }

  input {
    height: 60upx;
    font-size: $font-base + 2upx;
    color: $font-color-dark;
    width: 100%;
  }
}

.confirm-btn {
  width: 630upx;
  height: 76upx;
  line-height: 76upx;
  border-radius: 50px;
  margin-top: 70upx;
  background: $uni-color-primary;
  color: #fff;
  font-size: $font-lg;

  &:after {
    border-radius: 100px;
  }
}

.forget-section {
  font-size: $font-sm + 2upx;
  color: $font-color-spec;
  text-align: center;
  margin: 40upx;
}

.register-section {
  position: absolute;
  left: 0;
  bottom: 50upx;
  width: 100%;
  font-size: $font-sm + 2upx;
  color: $font-color-base;
  text-align: center;

  text {
    color: $font-color-spec;
    margin-left: 10upx;
  }
}

/* 其他 */
.other-ways {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  text {
    font-size: 28rpx;
    color: #999999;
  }
}
.other-ways::after {
  content: "";
  width: 36%;
  height: 2rpx;
  background-color: #eeeeee;
}
.other-ways::before {
  content: "";
  width: 36%;
  height: 2rpx;
  background-color: #eeeeee;
}
/* 登录方式 */
.login-way {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 200rpx;
  .way {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 50%;
    height: 100%;
    image {
      width: 100rpx;
      height: 100rpx;
    }
    text {
      font-size: 28rpx;
      color: #959595;
      margin-top: 20rpx;
    }
  }
}
</style>
